linux 搭建NFS

NFS网络共享,依赖rpc协议,

nfs启动时至少有rpc.nfsd和rpc.mountd两个进程

nfs和rpc的关系:nfs是一个文件系统,负责管理分享的目录;rpc负责文件的传递

rpc.nfsd主要是管理客户机登陆nfs服务器时,判断改客户机是否能登陆,和客户机ID信息

Rpc.mountd主要是管理nfs的文件系统。当客户机顺利登陆nfs服务器时,会去读/etc/exports文件中的配置,然后去对比客户机的权限。

协议使用端口:

RPC:      111        tcp/udp

nfsd:    2049       tcp/udp

mountd:RPC服务在 nfs服务启动时默认会为 mountd动态选取一个随机端口(32768–65535)来进行通讯 ,可以在/etc/nfsmount.conf文件中指定mountd的端口

1
2
3
4
#NFS安全策略
1.可对IP、IP段进行限制
2.用户限制只能对root和nobody或nfsnobody进行限制(nobody是linux默认用户,nfsnobody是nfs-utils安装时创建的用户)
注:若想实现安全还可对共享目录进行用户或组限制

服务端操作

1.安装nfs-utils

2.创建nfs共享目录,添加nfs配置

3.重启nfs服务

客户端操作

1.安装nfs-utils

2.启动nfs

3.挂载nfs目录

服务端操作

第一步,安装nfs-utils

yum -y install nfs-utils

(注:rpcbind属于nfs-utils依赖包会一起安装,且会自动创建nfsnobody用户)

第二步,配置nfs

NFS_DIR=/data

mkdir -p $NFS_DIR && chown nfsnobody:nfsnobody $NFS_DIR && echo "$NFS_DIR *(rw,sync,all_squash)" >> /etc/exports

配置文件的格式为:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
参数解析
/data            共享目录
0.0.0.0          任意地址(192.168.1.0/24,表示只允许192.168.1.* 网段的)

rw                可读写
ro                只读
sync              文件同时写入硬盘和内存
async             文件暂存内存,不立刻写入磁盘
no_root_squash    NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash        NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash         不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户nobody权限;
no_all_squash      不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有root权限;
anonuid             指定NFS服务器/etc/passwd文件中匿名用户的UID 
anongid              指定NFS服务器/etc/passwd文件中匿名用户的GID

第三步,启动

---------------------centos7

systemctl restart nfs

systemctl enable nfs

---------------------centos6

service rpcbind start

service rpcidmapd start

service nfs

开机启动

chkconfig

chkconfig

chkconfig nfs on

客户端操作

windows

1.安装nfs客户端

2.添加网络映射

linux

1.客户端需先安装nfs-utils

2.mount挂载

1
mount -t nfs 192.168.68.100:/data /mnt